package entities;

import services.impl.StandardOPs;
import java.util.List;
import java.util.LinkedList;
import java.util.ArrayList;
import java.util.Arrays;
import java.time.LocalDate;
import java.io.Serializable;
import java.lang.reflect.Method;

public class Student extends User  implements Serializable {
	
	/* all primary attributes */
	private String ClassName;
	
	/* all references */
	private List<Daily> StudentOwnDaily = new LinkedList<Daily>(); 
	private List<Plan> StudentOwnPlan = new LinkedList<Plan>(); 
	private List<Apply> StudentOwnApply = new LinkedList<Apply>(); 
	private List<StudentInTeam> StudentInTeamLink = new LinkedList<StudentInTeam>(); 
	private List<StudentInGroup> StudentInGroupLink = new LinkedList<StudentInGroup>(); 
	
	/* all get and set functions */
	public String getClassName() {
		return ClassName;
	}	
	
	public void setClassName(String classname) {
		this.ClassName = classname;
	}
	
	/* all functions for reference*/
	public List<Daily> getStudentOwnDaily() {
		return StudentOwnDaily;
	}	
	
	public void addStudentOwnDaily(Daily daily) {
		this.StudentOwnDaily.add(daily);
	}
	
	public void deleteStudentOwnDaily(Daily daily) {
		this.StudentOwnDaily.remove(daily);
	}
	public List<Plan> getStudentOwnPlan() {
		return StudentOwnPlan;
	}	
	
	public void addStudentOwnPlan(Plan plan) {
		this.StudentOwnPlan.add(plan);
	}
	
	public void deleteStudentOwnPlan(Plan plan) {
		this.StudentOwnPlan.remove(plan);
	}
	public List<Apply> getStudentOwnApply() {
		return StudentOwnApply;
	}	
	
	public void addStudentOwnApply(Apply apply) {
		this.StudentOwnApply.add(apply);
	}
	
	public void deleteStudentOwnApply(Apply apply) {
		this.StudentOwnApply.remove(apply);
	}
	public List<StudentInTeam> getStudentInTeamLink() {
		return StudentInTeamLink;
	}	
	
	public void addStudentInTeamLink(StudentInTeam studentinteam) {
		this.StudentInTeamLink.add(studentinteam);
	}
	
	public void deleteStudentInTeamLink(StudentInTeam studentinteam) {
		this.StudentInTeamLink.remove(studentinteam);
	}
	public List<StudentInGroup> getStudentInGroupLink() {
		return StudentInGroupLink;
	}	
	
	public void addStudentInGroupLink(StudentInGroup studentingroup) {
		this.StudentInGroupLink.add(studentingroup);
	}
	
	public void deleteStudentInGroupLink(StudentInGroup studentingroup) {
		this.StudentInGroupLink.remove(studentingroup);
	}
	


}
